package homework.day05;

import java.io.File;
import java.io.FileFilter;
import java.util.Comparator;

/**
 * 列出当前目录中所有名字包含s的子项。
 *
 * 使用匿名内部类和lambda两种写法
 *
 * 单词记一记:
 * FileFilter   文件过滤器
 * accept       接受
 *
 * @author Jobs
 *
 */
public class Test02 {
    public static void main(String[] args) {
        // 思路：找到当前目录下所有的子项
        File dir = new File(".");
        // 判断文件夹是否存在,匿名内部类
        if(dir.isDirectory()){
            // 编写过滤器
            FileFilter filter = new FileFilter() {
                @Override
                public boolean accept(File dir) {
                    // 获取文件名
                    String name = dir.getName();
                    // System.out.println(name);
                    // 判断是否包含s

                    // 方法1：使用indexOf() 方法,如果得到的是-1，则说明不包含s
                    return  name.indexOf('s') != -1;


                    /*
                    // 方法2：使用contains() 方法
                    // contains(String str) 判断是否包含指定的字符串
                    return name.contains("s");
                     */
                }
            };
            File[] files = dir.listFiles(filter);
            for (File file : files) {
                System.out.println("包含s的文件有:" + file);
            }
        }

        // 使用lambda表达式编写过滤器械
        // 先判断
        FileFilter filter1 = (file)->file.getName().indexOf('s') != -1;

        File[] files1 = dir.listFiles(filter1);
        for (File file : files1) {
            System.out.println("包含s的文件有:" + file);
        }

    }
}
